from PIL import Image
import os

"""
批量调整图片大小并保存到指定文件夹。
:param folder_path: 包含原始图片的文件夹路径。
:param output_folder: 输出图片的文件夹路径。
:param target_size: 目标图片的尺寸（宽度，高度）。
:param quality: 图片保存的质量（1-95）。
1440*1080
1920*1440
"""
def resize_and_compress_images(folder_path, output_folder, target_size=(1440, 1080), quality=85):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            file_path = os.path.join(folder_path, filename)
            img = Image.open(file_path)
            # 使用ANTIALIAS过滤器来保持较好的图像质量
            img.thumbnail(target_size, Image.Resampling.LANCZOS)
            # 加载图像数据（很重要，以确保EXIF数据被加载）
            img.load()
            exif_data = img.info.get('exif', None)
            output_path = os.path.join(output_folder, filename)
            # 使用optimize=True来进一步优化保存的图片质量
            img.save(output_path, optimize=True, quality=quality, exif=exif_data)
            print(f"Processed and saved: {output_path}")


# 使用示例
input_folder = 'C:\\Users\Administrator\\Desktop\\fa43a6a3-5cde-4925-8acd-db1c8a7cb013'
output_folder = 'C:\\Users\Administrator\\Desktop\\fa43a6a3-5cde-4925-8acd-db1c8a7cb013\\out-1440'
resize_and_compress_images(input_folder, output_folder)